<rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
    <channel>
        <title>Business Analyst Community &amp; Resources | Modern Analyst</title> 
        <link>https://modernanalyst.com</link> 
        <description>RSS feeds for Business Analyst Community &amp; Resources | Modern Analyst</description> 
        <ttl>60</ttl> <item>
    <comments>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1316/Eliminating-Software-Documentation.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>https://modernanalyst.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=182&amp;ModuleID=875&amp;ArticleID=1316</wfw:commentRss> 
    <trackback:ping>https://modernanalyst.com:443/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1316&amp;PortalID=0&amp;TabID=182</trackback:ping> 
    <title>Eliminating Software Documentation</title> 
    <link>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1316/Eliminating-Software-Documentation.aspx</link> 
    <description>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Not a suggestion for eliminating the process of documenting a software application, but rather a proposed for replacement of the documenting activity and manually produced documents with something more manageable and less likely to frighten the development team.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Initiative for this work comes from a number of discussions I have been following and also an expansion of ideas I have recently documented about best practices for software development.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;b&gt;1.1&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Introduction&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Developers nightmare – you have spent endless sleepless nights thinking about finally getting your software ready for deployment. It compiles and runs without error. It has been tested and passed user acceptance testing. It is finally ready to be released .. but, you are told that it may not be deployed until the documentation has been approved.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;You have been neglecting those 200 page templates that have lying in your inbox while getting your software to compile. Now you have to spend another umpteen nights in the office writing about what it is that you have produced – yawn!&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;This is not a task that is going to enthuse you to do a quality job. You will probably do your best to get the documents approved asap .. anything to get your code deployed so that you can spend some quality time with family and friends.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Is this a situation you have found yourself in? I have. When I was younger, I quickly learned that this is the downside to the job of being a software developer.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Supposing though, that all you needed to do to get your software deployed, after it was already ‘working’, is to check that everything is up-to-date and consistent, post your deliverables to a ‘release’ area and organize a review meeting, with follow-up!&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;The following is not meant to be a complete solution, but some ideas for eliminating that boring ‘produce documentation’ task, that always seems to follow any software development effort, not only for programmers, but any member of a development team effort, including analysts, architects, testers, UI designers and any other role that produces work that needs approval.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;b&gt;1.2&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;What&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Instead of identifying a document for delivery as part of a software effort, I propose to break the document into 2 components:&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpFirst&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;the document template, and&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpLast&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;document contents.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Where a document has previously been identified as a deliverable, identify the document template as a deliverable. In many cases this allows for several previously deliverable documents to be replaced with a single deliverable – the template that is subsequently populated with the document contents.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;This leads to 3 major activities:&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpFirst&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;creation and management of document templates,&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpMiddle&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;production of the contents populating the template(s),&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpLast&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;compilation of the document from its template and contents.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: smaller&quot;&gt;&lt;b&gt;&lt;a name=&quot;_Ref256964043&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;1.3&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;How&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;b&gt;&lt;a name=&quot;_Ref256964043&quot;&gt;&lt;/a&gt;&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;1.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Identify the stakeholders that require information that is not part of the compilable software.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListNumber&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;2.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;For each stakeholder, list the information that they require in order to approve the product.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListNumber&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;3.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Work with each stakeholder to create (or select from a library) the format for a template that is an acceptable method of presenting the required information.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListNumber&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;4.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Identify dates for the delivery(s) of each template and its needed contents, and track the progress of each.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;b&gt;1.4&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Process&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;For each task under&amp;#160;&lt;a href=&quot;#_Ref256964043&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;How&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small&quot;&gt; consider something along the lines of the following activities.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;b&gt;1.4.1&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Identify Stakeholders&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Stakeholders are anyone within or outside of the development team with an interest in the progress of the product. Anyone not requiring information from the product development effort, is probably not a stakeholder. Typical examples are:&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpFirst&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;End users – who would like to see early examples of the user interface and a description of how it operates.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpMiddle&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;Project managers – who want to be able to track the progress and effort of everything in the product repository.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpMiddle&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;Testers – who will need to be able to access the product requirements in order to maintain test cases.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpLast&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;Business owners – who will want to k now the scope of the product releases and which requirements are going to be satisfied at each release.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;b&gt;1.4.2&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;List Information&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;In the past when each stakeholder has been asked for their needs, they would typically turn to an existing document for reference. This document is often stripped of its current contents and has its contents replaced with information for the new product, without consideration for whether the information is ‘really’ required.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Instead, try starting with traditional document templates and work with the stakeholder to:&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListNumber&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;1.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;identify which sections they ‘really’ need,&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListNumber&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;2.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;describe the reason for this need,&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListNumber&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;3.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;write a description of what is documented in order to satisfy this need,&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListNumber&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;4.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;identify a product development timeframe for this information to be available.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Each item of information is given a location in the product repository, and duplicate information is consolidated.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Create a public interface location that always contains the latest version of each piece of information. This is the ‘release’ area.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;b&gt;1.4.3&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Accessing Information and Publishing Documents&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;In many cases a stakeholder may not even require that information is presented in a traditional document form. If the stakeholder is comfortable with the repository used to contain the information, all they may need is easy access to that information.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Using a document sharing tool, such as SharePoint or a Wiki, it is relatively easy to create customized user pages that accesses only the information the stakeholder needs in a layout that makes it easy to access that information.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Alternatively, a scripted documentation tool, such as SoDA, may be used to parse a template and automatically populate it with information from the repository. Give the ability to produce the document to the stakeholder, and the development team need not be concerned with producing documents. They simply inform the stakeholders that a new version is ready for review, publish the information to the release location that the script accesses, and the stakeholder can run the script to extract the required information whenever it is convenient for them.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;b&gt;1.4.4&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Delivery Dates And Tracking Progress&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Attributes may be added to each repository element for delivery dates, assigned responsibility, progress, stakeholder(s) and a description of its contents. A reusable placeholder is created for each delivery type containing default information for each attribute.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;b&gt;1.5&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Conclusion&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;As stated, the idea is not necessarily to remove documentation from the project, but to&amp;#160; reduce the usage of the word on a development effort, and put emphasis on the ‘required’ contents and less on the document itself.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Advantages of this type of approach might be:&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpFirst&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;The removal of unwanted/unused documentation.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpMiddle&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;Tracking by more manageable chunks.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpMiddle&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;Elimination of duplicate information.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpMiddle&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;Removal of confusion over what is ‘most current’, since there is a single delivery area for every unique deliverable.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListBulletCxSpLast&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Symbol&quot;&gt;&#183;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;An end to the developers nightmare of having to produce reams of documentation, after the ‘fun’ part is over.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;I recognize that not all deliverable documents can necessarily be replaced in this manner. But maybe it is a start towards removing the dreaded word ‘documentation’ from a project’s deliverables list and maybe a compromise between agile proponents of minimizing documentation and those requiring documentation according to some sort of standard.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;b&gt;1.6&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; -x-system-font: none&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;References&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Links to articles that inspired this work.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.linkedin.com/groupAnswers?viewQuestionAndAnswers=&amp;amp;discussionID=14867479&amp;amp;gid=1976291&amp;amp;trk=EML_anet_qa_ttle-0Qt79xs2RVr6JBpnsJt7dBpSBA&quot;&gt;&lt;span style=&quot;font-size: x-small&quot;&gt;http://www.linkedin.com/groupAnswers?viewQuestionAndAnswers=&amp;amp;discussionID=14867479&amp;amp;gid=1976291&amp;amp;trk=EML_anet_qa_ttle-0Qt79xs2RVr6JBpnsJt7dBpSBA&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;../../../../../Community/CommunityBlog/tabid/182/articleType/ArticleView/articleId/1267/Best-Practices.aspx&quot;&gt;&lt;span style=&quot;font-size: x-small&quot;&gt;Best Practices&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Create a product information repository that contains everything that is going to be shared amongst product stakeholders. Using this repository:&lt;/span&gt;&lt;/p&gt;</description> 
    <dc:creator>Leslie</dc:creator> 
    <pubDate>Mon, 22 Mar 2010 10:25:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1316</guid> 
    
</item>
<item>
    <comments>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1273/Best-Practices--Ad-Hoc-Procedures.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>https://modernanalyst.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=182&amp;ModuleID=875&amp;ArticleID=1273</wfw:commentRss> 
    <trackback:ping>https://modernanalyst.com:443/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1273&amp;PortalID=0&amp;TabID=182</trackback:ping> 
    <title>Best Practices - Ad Hoc Procedures</title> 
    <link>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1273/Best-Practices--Ad-Hoc-Procedures.aspx</link> 
    <description>&lt;h1&gt;&lt;span style=&quot;font-size: small&quot;&gt;Ad Hoc Procedures&lt;/span&gt;&lt;/h1&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;My belief is that software development should be more of a science and contain as little artistry as necessary. It is great to come up with ingenious processes and guidelines for developing your software, but if they impact your colleagues you must get buy-in from everyone who is impacted before you start using them.&lt;/span&gt;&lt;/span&gt;&lt;a title=&quot;&quot; href=&quot;#_ftn1&quot; name=&quot;_ftnref1&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;Some people achieve satisfaction by getting a compliment for a ‘job well done’, some for a ‘working really hard’ others for ‘being a team player’. Nothing gives me more pleasure than having a colleague answer ‘Yes’ to the question, “Did I make your life easier?”.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;Recommended procedures for working with documents should be documented, available and approved by all users of those procedures. Examples of these procedures include:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;Location of document templates and how to access them.&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;The purpose of the document template and where to enter information into the template.&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;Documentation numbering and versioning conventions.&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;How to check out from and check in to a document repository system.&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;How to use the product or project glossary.&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;The purpose of the styles and properties that are used by a document.&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;The process for baselining, or creating a new version of a document.&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;Document your procedures and make sure that everyone that needs them understands them and has easy access to their documents.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;Further articles will expand upon the obove bullets, with examples.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr align=&quot;left&quot; size=&quot;1&quot; width=&quot;33%&quot; /&gt;
&lt;div id=&quot;ftn1&quot;&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;a title=&quot;&quot; href=&quot;#_ftnref1&quot; name=&quot;_ftn1&quot;&gt;&lt;/a&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;a title=&quot;&quot; href=&quot;#_ftnref1&quot; name=&quot;_ftn1&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;&quot;&gt;[1]&lt;/span&gt;&lt;/a&gt; This was not always the case .. when I first started programming I invented some extremely ingenious and complex software procedures, that I was proud of at the time. I look back at those days and cringe.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;Editor&#39;s Note&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;:&amp;#160;Check out the list of&amp;#160;all related &lt;a href=&quot;http://www.modernanalyst.com/Community/CommunityBlog/tabid/182/articleType/ArticleView/articleId/1267/Best-Practices.aspx&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;font &gt;best practices&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;</description> 
    <dc:creator>Leslie</dc:creator> 
    <pubDate>Thu, 18 Mar 2010 06:16:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1273</guid> 
    
</item>
<item>
    <comments>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1271/Best-Practices--Document-Content.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>https://modernanalyst.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=182&amp;ModuleID=875&amp;ArticleID=1271</wfw:commentRss> 
    <trackback:ping>https://modernanalyst.com:443/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1271&amp;PortalID=0&amp;TabID=182</trackback:ping> 
    <title>Best Practices - Document Content</title> 
    <link>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1271/Best-Practices--Document-Content.aspx</link> 
    <description>&lt;h1&gt;&lt;span style=&quot;font-size: small&quot;&gt;Unnecessary Documentation&lt;/span&gt;&lt;/h1&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;The first section that I look for in a document, is the paragraph that describes ‘who this document is written for’ and ‘what benefit they can expect to gain by reading this document’. If I do not see my role, or I do not see any benefit from me spending time reading the document, then I have to ask myself the question, ‘Do I want to read this document?’ I want this information to be displayed to me asap, such that I waste as little time as possible, reading a document that is of no interest to me.&lt;/span&gt;&lt;a title=&quot;&quot; href=&quot;#_ftn1&quot; name=&quot;_ftnref1&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span class=&quot;MsoFootnoteReference&quot;&gt;&lt;span class=&quot;MsoFootnoteReference&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;&quot;&gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;When I review a document or document template, another task that I might perform, is to consider each section in the document and ask the question, “Who asked for this information to be entered into this document?’ Or, another way of putting the question is; Who is going to read this and get value from it?&lt;/span&gt;&lt;a title=&quot;&quot; href=&quot;#_ftn2&quot; name=&quot;_ftnref2&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span class=&quot;MsoFootnoteReference&quot;&gt;&lt;span class=&quot;MsoFootnoteReference&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;&quot;&gt;[2]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Typical subsequent sections of a document I have seen that need this question applied include:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;Document History – How many readers want to know what changed between versions from 1.1 through to 1.15? &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;Definitions and acronyms – leave them in the glossary, nobody needs to read these in the document. If anything I want to be able to reference these while reading the document without having to leave the current page. (See also ‘Duplication’.) &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;References – Put the reference in the section that uses it. I do not need to see a separate page containing a complete list of document references. I am not going pull up all the referenced documents and have them prepared in case I come across documentation that makes reference to one of them. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Before you document something, find out who it is that needs this information documented.&lt;/span&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Which leads me to ..&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;a name=&quot;_Toc228002065&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Document Content Organization&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;On a related issue: There are tools for recording document versions. Any decent tool that is intended as a central repository for files of any type will record the version of the document and allow the author to add comments to the version. Such tools include SharePoint, LiveLink and ClearCase amongst many others. So why is it that when I open most documents, one of the first things to be presented for my reading pleasure is a table containing a version history. Honestly, I have seen version histories that span many pages and are quite detailed. They explain every change that has been made to the document over the last Millennium. Who wants to read this stuff, and why is it the first information that is presented to the reader after getting past the front page? If we are using a document management system on this project, (and I certainly hope that we are) all of the version history information should be documented inside the tool. Why is it being repeated in the document?&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Many years ago, before the advent of intelligent document comparison tools, this information may have been useful in the front of the document. It allowed to reader to determine which parts of the document have changed since the last time they read it. Today, any Word processor worth purchasing will inform you what has changed since the last time you reviewed the document.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;I realize that there are some roles on the project to whom this information is important, QA or auditors, for example. If you must publish this information with the document, put it in an appendix to the document, or better still, extract it from your document management tool into its own document. Then distribute the version history document only to those people that want it.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Now that the version history is out of the way, what do we now see when we open the front cover of the document? The table of contents. It is useful to be able to easily locate this, but I question whether it is the first piece of information that I want to read. What I need to know, as soon as possible is, ‘Should I be reading this document?’ What is going to answer this question – the Introductory material in section 1.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;The first question I want answered is; Is this document describing a system that I am interested in? &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;The second question is; Is the information in this document pertinent to my relationship with the application? &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;The third question is; What information am I going to get from this document? &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;Fourthly: What is my responsibility towards the information in this document? &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Hopefully, the answers to these questions become apparent as soon&amp;#160; as I open the front cover of the document.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;Put the appropriate information in the appropriate place and avoid showing unnecessary information to the wrong people.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr align=&quot;left&quot; size=&quot;1&quot; width=&quot;33%&quot; /&gt;
&lt;div id=&quot;ftn1&quot;&gt;
&lt;p class=&quot;MsoFootnoteText&quot;&gt;&lt;a title=&quot;&quot; href=&quot;#_ftnref1&quot; name=&quot;_ftn1&quot;&gt;&lt;/a&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;a title=&quot;&quot; href=&quot;#_ftnref1&quot; name=&quot;_ftn1&quot;&gt;&lt;span class=&quot;MsoFootnoteReference&quot;&gt;&lt;span class=&quot;MsoFootnoteReference&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;&quot;&gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; Typically, I expect to see this section, right after the document overview, which tells me that I am not a part of this project anyway.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;ftn2&quot;&gt;
&lt;p class=&quot;MsoFootnoteText&quot;&gt;&lt;a title=&quot;&quot; href=&quot;#_ftnref2&quot; name=&quot;_ftn2&quot;&gt;&lt;/a&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;a title=&quot;&quot; href=&quot;#_ftnref2&quot; name=&quot;_ftn2&quot;&gt;&lt;span class=&quot;MsoFootnoteReference&quot;&gt;&lt;span class=&quot;MsoFootnoteReference&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;&quot;&gt;[2]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; If the content is relevant, then I might ask if this information is implied within the section that describes the ‘Audience’ for the document.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;Editor&#39;s Note&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;:&amp;#160;Check out the list of&amp;#160;all related &lt;a href=&quot;http://www.modernanalyst.com/Community/CommunityBlog/tabid/182/articleType/ArticleView/articleId/1267/Best-Practices.aspx&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;font &gt;best practices&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;</description> 
    <dc:creator>Leslie</dc:creator> 
    <pubDate>Mon, 15 Mar 2010 04:47:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1271</guid> 
    
</item>
<item>
    <comments>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1270/Best-Practices--Inconsistent-Documentation.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>https://modernanalyst.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=182&amp;ModuleID=875&amp;ArticleID=1270</wfw:commentRss> 
    <trackback:ping>https://modernanalyst.com:443/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1270&amp;PortalID=0&amp;TabID=182</trackback:ping> 
    <title>Best Practices - Inconsistent Documentation</title> 
    <link>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1270/Best-Practices--Inconsistent-Documentation.aspx</link> 
    <description>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;If you are writing a letter to your mother, it is fine to create a new a new blank document, type your random thoughts, add highlighting, colors and emphasized text where you want to make and get a point across, and basically format the document with any creative ideas that you feel appropriate.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;When working with documents in the workplace, ad hoc formatting is probably not appropriate. Yet I see so many requirements and other technical documents that were written by people who thought that they were writing a letter to their parents.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Imagine if every programmer on the development team wrote source code using their own personal coding standards. Nobody would be able to maintain someone else’s code. It should be the same with documentation. Every document should be written from a predefined document template that includes documentation standards (instructions for use), a consistent set of styles and properties.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;The problem not only applies to textual documents, but also to diagrams. UML for example, defines a set of artifacts in terms of a set semantics and rules that apply to that artifact. (As far as I am aware) the icons used to represent an artifact are not defined within UML standards. Not only that, but UML allows the stereotyping of defined artifacts, which in turn leads to a customized representation of the artifact.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;An example, I might be, using an arrowhead to indicate the initiator of a use case (which I do), and someone else using a dashed line to indicate the same thing. Now there needs to be an explanation in each document of the meaning of which notation that is being used. Not only that, but if both diagrams contribute to the same document, you are going to confuse your readers.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Use a set of rules for identifying a particular meaning on a diagram. If there is no rule for it, then make one up and explain what the particular notation means (although the more project rules there are , the less explanation needs to be added to the diagram or document). Say for example, you wish to highlight parts of a diagram to indicate that they are candidates for change, but there are no project specific rules for indicating how to highlight changing components. Then go ahead and shade the items (or whatever highlight you prefer) and explain what the highlighting means.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Which leads me to; the number of times I see a figure in a document without, not just a description of the figure, but not even a reference to it. Why did you put this figure here, if you are making no reference to it?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;If there are 2 ways of doing something, pick one that works, describe it and stick with it for the length of the project.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;Editor&#39;s Note&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;:&amp;#160;Check out the list of&amp;#160;all related &lt;a href=&quot;http://www.modernanalyst.com/Community/CommunityBlog/tabid/182/articleType/ArticleView/articleId/1267/Best-Practices.aspx&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;font &gt;best practices&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;</description> 
    <dc:creator>Leslie</dc:creator> 
    <pubDate>Sat, 13 Mar 2010 05:40:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1270</guid> 
    
</item>
<item>
    <comments>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1269/Best-Practices--Ambiguity.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>https://modernanalyst.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=182&amp;ModuleID=875&amp;ArticleID=1269</wfw:commentRss> 
    <trackback:ping>https://modernanalyst.com:443/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1269&amp;PortalID=0&amp;TabID=182</trackback:ping> 
    <title>Best Practices - Ambiguity</title> 
    <link>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1269/Best-Practices--Ambiguity.aspx</link> 
    <description>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;How many times have you experienced a disagreement between colleagues, only find out later in the project that they were both correct. Chances are that they were using the same word, but both had different ideas of its meaning. &lt;/span&gt;&lt;span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt&quot;&gt;&lt;a href=&quot;#1&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;[1]&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;I can derive hours of entertainment by playing word games with my friends, by picking a word they are using and purposely give it a definition that they are not thinking of. The important thing is that no one definition is incorrect, but it may be different.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;For example, ‘Closing the door’; everyone knows when a door is closed and when it is not – don’t they? I might argue that no 2 people have exactly the same definition of a closed door. I might argue that a door that is ajar by an inch or so is actually closed. This is not strictly incorrect unless all parties involved in the conversation have agreed to a definition of a ‘closed’ door. &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Obviously, this is not the sort of discussion that you want to have in the work place, but it is going to happen if not everyone has the same definition for an ambiguous term. Ok, you may say, but everyone in the work place has a pretty good idea (or at least a close idea) of what constitutes a closed door, such that we do not have to define it. Well if you are working for a word processing software company – yes; but if you are writing software for an application that controls submarines, and you want me to ride on that sub, I hope that the word ‘closed’ when referring to doors, was well-defined early in the development process.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;My recommendation is to maintain a glossary of commonly used terms on your project that could cause confusion if open to several interpretations. We know that ideally requirements should not contain adjectives or adverbs, such as near, far, slowly or quiet. Sometimes we need to use these words on a project, in which case they should be defined in a glossary. For example; if we often use the word slowly, then define it as; Slowly – implies that the vehicle is traveling at less than 10% of its maximum speed.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;I find that a RequisitePro project works well for maintaining a glossary of terms. MS Excel &amp;#160;and other spreadsheet applications may work equally well; so long as you can order terms, give them several attributes (acronym for example) and link them (as synonyms of each other, for example).&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Next time you are in a disagreement with anyone (be it at work or at your local), listen to the words that they are using and try to figure out which ones are having a different definition applied to that which you are using. You’ll come to an agreement eventually (that is of course unless their objective in arguing is to maintain the argument).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span style=&quot;font-family: Arial&quot;&gt;Whenever possible, do not use a word (acronym or term) that is ambiguous, because you can be sure more than one interpretation will be used.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr align=&quot;left&quot; size=&quot;1&quot; width=&quot;33%&quot; /&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;a name=&quot;1&quot;&gt;&lt;/a&gt;[1]&lt;/span&gt;&lt;span style=&quot;font-size: small&quot;&gt; I’m sure that we have all experienced this game as children. Leslie, I thought that I told you to tidy your room .. it is tidy .. no, it isn’t.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;Editor&#39;s Note&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;:&amp;#160;Check out the list of&amp;#160;all related &lt;a href=&quot;http://www.modernanalyst.com/Community/CommunityBlog/tabid/182/articleType/ArticleView/articleId/1267/Best-Practices.aspx&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;best practices&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;</description> 
    <dc:creator>Leslie</dc:creator> 
    <pubDate>Sat, 13 Feb 2010 05:34:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1269</guid> 
    
</item>
<item>
    <comments>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1268/Best-Practices--Duplication.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>https://modernanalyst.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=182&amp;ModuleID=875&amp;ArticleID=1268</wfw:commentRss> 
    <trackback:ping>https://modernanalyst.com:443/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1268&amp;PortalID=0&amp;TabID=182</trackback:ping> 
    <title>Best Practices - Duplication</title> 
    <link>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1268/Best-Practices--Duplication.aspx</link> 
    <description>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;How often do you see the same piece of information documented in 2 places? I am used to seeing requirements information copied into design documents; whole sets of requirements being copied into a test repository and diagrams copied from one document to another. Unless you employ a strict change management control system that includes a traceability scheme, this sort of practice is going to prove expensive, for 2 main reasons:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;The work of maintaining information is being done twice. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;More expensively, if one artifact changes and the other doesn’t, how do we know which is correct? &lt;/span&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span&gt;&lt;a href=&quot;#1&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;[1]&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Employing an automatic update scheme, a traceability scheme which shows when something has changed or a strict configuration management scheme which prevents artifacts from being changed, will go some way to solving the duplication problems, but again they are expensive.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Rather than spending time and money in trying to control duplication; I recommend, ‘Don’t Do It’. Here are some schemes that can be used to prevent duplication:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;Put the information in a central repository and reference it with hyperlinks. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;If you must have the information displayed in two separate places, use Object Links and Embedding (OLE). Extract the information from both artifacts, place it in its own document and embed the document as an OLE. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;Use document generation tools, such as SoDA, to insert duplicated information into your documents. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;Ask yourself the question; ‘Do I need to put this information here?’ Or, ‘Can I reference the same information, located somewhere else?’ &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span&gt;Do not copy, either use a link or make a reference if you absolutely must have it here.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr align=&quot;left&quot; size=&quot;1&quot; width=&quot;33%&quot; /&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;a name=&quot;1&quot;&gt;&lt;/a&gt;[1] The worst example of this was on a contract where the test team did not like the way the developer’s document repository was organized, so they copied the developer’s documents into their own repository. The wrong tests were consistently being executed against the code.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;Editor&#39;s Note&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;:&amp;#160;Check out the list of&amp;#160;all related &lt;a href=&quot;http://www.modernanalyst.com/Community/CommunityBlog/tabid/182/articleType/ArticleView/articleId/1267/Best-Practices.aspx&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;font &gt;best practices&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;</description> 
    <dc:creator>Leslie</dc:creator> 
    <pubDate>Sat, 13 Feb 2010 04:22:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1268</guid> 
    
</item>
<item>
    <comments>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1267/Best-Practices.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>https://modernanalyst.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=182&amp;ModuleID=875&amp;ArticleID=1267</wfw:commentRss> 
    <trackback:ping>https://modernanalyst.com:443/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1267&amp;PortalID=0&amp;TabID=182</trackback:ping> 
    <title>Best Practices </title> 
    <link>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1267/Best-Practices.aspx</link> 
    <description>&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;This following blogs contain rants and recommendations for good practices, useful not only for when delivering software, but that can also be used any time organization is required.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;The most common improvements that can be leveraged on any (some on every) development process it has been my experience to be involved with, are the following: &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;strong&gt;&lt;a href=&quot;http://www.modernanalyst.com/Community/CommunityBlog/tabid/182/articleType/ArticleView/articleId/1268/Best-Practices-Duplication.aspx&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Duplication&lt;/span&gt; &lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small&quot;&gt;- Copying and pasting, work (text or diagrams) from one place (or document) to another. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;a href=&quot;http://www.modernanalyst.com/Community/CommunityBlog/tabid/182/articleType/ArticleView/articleId/1269/Best-Practices-Ambiguity.aspx&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Ambiguity&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;- Using the same term(s) with more than 1 meaning on the same project. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;a href=&quot;http://www.modernanalyst.com/Community/CommunityBlog/tabid/182/articleType/ArticleView/articleId/1270/Best-Practices-Inconsistent-Documentation.aspx&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Inconsistent Documentation&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: small&quot;&gt; - Documents that supposedly describe the same information (or have similar purposes), but have different content. Deviating from the approved document template.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;a href=&quot;http://www.modernanalyst.com/Community/CommunityBlog/tabid/182/articleType/ArticleView/articleId/1271/Best-Practices-Document-Content.aspx&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Unnecessary Documentation&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: small&quot;&gt; - The creation of documentation, without first identifying an audience. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;a href=&quot;http://www.modernanalyst.com/Community/CommunityBlog/tabid/182/articleType/ArticleView/articleId/1271/Best-Practices-Document-Content.aspx&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Document Content Organization&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: small&quot;&gt; - Related to unnecessary documentation. This rant is concerned with putting the right information in the right place in the document. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;a href=&quot;http://www.modernanalyst.com/Community/CommunityBlog/tabid/182/articleType/ArticleView/articleId/1273/Best-Practices-Ad-Hoc-Procedures.aspx&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Ad Hoc Procedures&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: small&quot;&gt; - Concerns having a standard set procedures for handling files and making sure that everyone on the project understands how to use them.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;I will discuss each point in detail in my following posts ..&lt;/span&gt;&lt;/p&gt;</description> 
    <dc:creator>Leslie</dc:creator> 
    <pubDate>Fri, 12 Feb 2010 08:10:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1267</guid> 
    
</item>
<item>
    <comments>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1266/Thoughts-on-Specifying-Requirements.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>https://modernanalyst.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=182&amp;ModuleID=875&amp;ArticleID=1266</wfw:commentRss> 
    <trackback:ping>https://modernanalyst.com:443/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1266&amp;PortalID=0&amp;TabID=182</trackback:ping> 
    <title>Thoughts on Specifying Requirements</title> 
    <link>https://modernanalyst.com/Community/CommunityBlog/tabid/182/ID/1266/Thoughts-on-Specifying-Requirements.aspx</link> 
    <description>&lt;h1&gt;&lt;span style=&quot;font-size: small&quot;&gt;Requirements&lt;/span&gt;&lt;/h1&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;I have been working with requirements for more than 20 years. To be honest, it was several years before I understood the true purpose of requirements. The enlightenment came about when I was tasked with documenting a presentation to my colleagues that described the characteristics of a ‘&lt;span class=&quot;EmphasisItalicChar&quot;&gt;good&lt;/span&gt;’ requirement. The characteristics that the team came up with included:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Complete – A functional requirement should describe all observable inputs, all observable outputs, when it can occur, who (actor that) is allowed to initiate the requirement and the maximum time that the requirement is allowed to complete.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Consistent – The requirement should not be in conflict with any other requirements for the project. For example, if one requirement states that all user inputs will be processed within 5 seconds of entry and another requirements states that system shall respond to a particular user input within 10 seconds, there is a conflict in the requirements.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Correct – Are the requirements specifying a solution that the business wants implemented?&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Design independent – If there is another way of specifying the requirement which will result in a different solution to the problem, then it probably contains design information and should be abstracted out to allow for all possible design decisions. For example, stating that when the main window is closed that the system will logout the user etc, is too detailed. Supposing we decide not to build a windowed application? A better way to abstract the requirement would be to say that when the user exits the application that they will be logged out, etc.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Feasible – Is it possible to implement the requirement within the specified time and budget? (And, we might want to ask if there is there a positive return on investment (ROI) for implementing this requirement?)&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;No negative requirements – Stating the system ‘shall not’ do something is either untestable or irrelevant. The requirements state what the system will do; anything else is out of scope. For example, instead of stating that something shall not be ‘red’, state the colors that it may take. Irrelevant example; stating that the system ‘shall not’ allow a user to view user information, is already covered by a requirement that an administrator shall be able to view user information. The fact that it has been stated that administrators may view this information, excludes all other actors, unless explicitly stated. A rule of thumb is that the system does nothing unless it is stated as a function of the requirements.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Relevant – Is the requirement in scope for the current effort.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Testable – Is it possible to define specific ranges of inputs and outputs for the requirement such that when the implementation of the requirement is executed all inputs cause the system to produce the specified outputs, otherwise the implementation of the requirement fails?&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Unambiguous – The requirement should not contain any words that are open to interpretation. This includes all adjectives and adverbs, unless they are clearly defined in a project glossary. For example, the system shall allow ‘many’ users to change their profile. Unless the word ‘many’ is explicitly defined this requirement has little meaning; and it can be satisfied by allowing exactly 2 users to change their profile and no more.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;span style=&quot;font-size: small&quot;&gt;Functional Requirements&lt;/span&gt;&lt;/h2&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;In addition to the above, functional requirements include the following characteristics:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Precondition (optional) – when can the functional requirement execute? The precondition specifies what state the system must be in before the requirement may be initiated. Not all functional requirements are able to execute at any time. If using a use case approach to writing functional requirements, the use case precondition states what use case(s) must have completed prior to this use case being able to initiate, and each step in the use case has an implied precondition, which is the previous step in the use case. (Sometimes the precondition may be implied by the wording of the requirement, in which case it does not have to be explicitely stated.)&lt;br /&gt;
    &lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Time to complete – if a functional requirement does not have an associated maximum time to complete, then if the implementation of the requirement does nothing it will never fail testing. If it never fails testing and never does anything it will never get deployed into production. Again, using a use case approach, the whole use case may be given a time to complete, or you may specify time to complete for individual steps. If a group of steps are assigned a time to complete, and that time expires during testing, then every step in that grouping is considered to have failed the test.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;span style=&quot;font-size: small&quot;&gt;Non-Functional Requirements&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Non-functional requirements additionally include the following characteristics:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Reference to a functional requirement – non-functional requirements place constraints upon functional requirements. Functional requirements may include the meaning of the non-functional requirement in their specification. The reason non-functional requirements are specified separately is because they often impact many functional requirements. We do not want to duplicate the requirement. Therefore it is called out as a separate requirement and references the functional requirements that it impacts.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;span style=&quot;font-size: small&quot;&gt;Definition of a Functional Requirement&lt;/span&gt;&lt;/h2&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;From Wikipedia: ‘In software engineering, a functional&lt;b&gt; &lt;/b&gt;requirement defines a function of a software system or its component. A function is described as a set of inputs, the behavior, and outputs (see also software).’&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;When not employing use cases, I use a template for specifying requirements of the following format: &#39;When&#39; in a certain state* &#39;and&#39; &#39;upon’ some externally visible event occurring (the trigger), ‘the system shall’ do something externally visible, ‘within’ a certain time frame.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;[&#39;When&#39; in a certain state is optional, and if omitted means that the requirement is valid in under all circumstances, i.e. it has no precondition.]&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;For example, &#39;When&#39; the ATM is free, &#39;and upon’ a customer inserting a valid debit card into the ATM slot, ‘the system shall’ request that the customer input their PIN through the ATM user interface, ‘within’ 5 seconds.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;(The 5 seconds of course applies to the system and not to the customer entering their PIN.)&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;Here are some examples of requirements that do not satisfy the template. See if you can figure why before reading my answers.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span&gt;When requesting a customer PIN, and u&lt;/span&gt;pon a customer entering their PIN through the ATM UI, the system shall verify that the PIN is correct for the card, within 5 seconds.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span&gt;U&lt;/span&gt;pon verification of the customers PIN, the system shall inform their customer that they may select an action from the ATM UI, within 5 seconds.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Upon dispensing cash to a customer, the system shall send a message to the Banking System requesting that the customer’s account balance be deducted by the amount dispensed.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;&lt;span&gt;When a customer card is inserted, and u&lt;/span&gt;pon the Banking system receiving a deduction message, the system shall give the customer their card back, within 5 seconds.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;Upon a customer entering the &#39;Display Balance&#39; command, the system shall request the customer balance from the Banking system, within 5 seconds. &lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;In my opinion these requirements contain the following errors:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;‘Verify the PIN’ is not an externally visible action. If the PIN is valid, the selection screen will be displayed. If the PIN is invalid, an error message will be displayed. The first case was already covered by the original requirement when it included the word ‘valid’. We need to add another (separate) requirement to cover the invalid situation.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;The trigger is not externally visible. We cannot observe the system verifying the customer PIN. In fact the act of ‘verifying’ the PIN is a design decision. Our designers might equally decide that the PIN is verified by the Banking System. In fact, in reality, it probably is.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;No time frame specified. The banking system is going to lose a lot of money if the ATM sends out deduction requests once a year.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;The trigger is not an event that the ATM system can recognize. The Banking System has to somehow inform the ATM system that it received the message. It is upon reception of this event that the requirement initiates.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;span style=&quot;font-size: small&quot;&gt;No precondition. The customer must first have entered a valid PIN, otherwise the system cannot be sure whose balance to request.&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small&quot;&gt;In my next post I intend to identify some best practices for working with requirements..&amp;#160;&lt;/span&gt;&lt;/p&gt;</description> 
    <dc:creator>Leslie</dc:creator> 
    <pubDate>Fri, 12 Feb 2010 08:04:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1266</guid> 
    
</item>

    </channel>
</rss>